<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>关键字break和continue</title>
</head>
<body>
    <script>
        /*关键字break 用来退出循环 只用于swith和循环语句（while和for）
        *   不能在if语句中使用break和continue
        *   使用break只对最近的循环其作用 外部循环是不其作用的
        *       那么可以为循环语句创建一个标签label 来识别当前循环
        *       使用break语句时，可以在break后跟着一个label 这样break将会结束指定的循环，而不是最近的，
        *       continue只能用于循环语句即while和for循环
        *       break终止当次循环 而continue是跳过本次循环
        *
        *  */
        //举例1
        for(var i=0;i<5;i++){
            document.write("外部循环"+i+"<br/>");
            for (var j=1;j<4;j++){
                break;//使用break只对最近的循环其作用 外部循环是不其作用的
                document.write("内部循环"+j);
            }
        }
        document.write("<br/>")//只对两个例子之间有一个空白而已 没有任何作用在这里
        //举例2
        hello://label标签
        for(var i=0;i<5;i++){
            document.write("外部循环"+i+"<br/>");
            for (var j=1;j<4;j++){
                break hello;//使用break只对最近的循环其作用 外部循环是不其作用的
                document.write("内部循环"+j);
            }
        }
        document.write("<br/>")//只对两个例子之间有一个空白而已 没有任何作用在这里
        //举例3 continue 跳过本次循环 把2跳过去了 返回的值是 0,1,3,4
        for (var i=0;i<5;i++){
            if (i==2){
                continue;
            }
            document.write(i+"<br/>");
        }
        document.write("<br/>")//只对两个例子之间有一个空白而已 没有任何作用在这里
        //举例4 求1-100质数 提交性能
        //  测试性能 完成该循环用多少时间
        console.time("test");//开始计时
        for (var i=2;i<=100;i++){
            var flag=true;
            for (var j=2;j<i;j++){
                if(i%j==0){
                    flag=false;
                    break;//一旦进入循环,则正面i不是质数了。此时循环在执行已经没有任何意义了，使用break将结束循环。
                }//没加break 测试时间是0.53毫秒  加上break是0.14毫秒 说明性能提高了
            }
            if (flag){
                document.write(i+"<br/>");
            }
        }
        console.timeEnd("test");//结束计时
        document.write("<br/>")//只对两个例子之间有一个空白而已 没有任何作用在这里
        //举例5 求1-100质数 简化函数值
        console.time("test1");//开始计时
        for (var x=2;x<=100;x++){
            var flag=true;
            for (var y=2;y<Math.sqrt(x);y++){
                //可以通过Math.sqrt(number)进行开方 取值范围缩小 这样性能也会提高
                if(x%y==0){
                    flag=false;
                    break;//一旦进入循环,则正面i不是质数了。此时循环在执行已经没有任何意义了，使用break将结束循环。
                }//没加break 测试时间是0.53毫秒  加上break是0.14毫秒 说明性能提高了
            }
            if (flag){
                document.write(x+"<br/>");

            }
        }
        console.timeEnd("test1");//结束计时
    </script>
</body>
</html>